package com.dkm.ec.sale.persistence.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

import com.dkm.base.api.model.Page;
import com.dkm.base.db.mybatis.dao.MyBatisQueryDaoImpl;
import com.dkm.base.db.mybatis.impl.domain.MyBatisPage;
import com.dkm.ec.sale.persistence.dao.SaleSkuQueryDao;
import com.dkm.ec.sale.persistence.entity.SaleSkuPo;

/**
 * 对象功能:销售产品SKU QueryDao接口的实现
 * 开发公司:SKG.COM
 * 开发人员:Yuki
 * 创建时间:2015-01-22 13:52:18
 */
@Repository
public class SaleSkuQueryDaoImpl extends MyBatisQueryDaoImpl<String, SaleSkuPo> implements SaleSkuQueryDao{

    @Override
    public String getNamespace() {
        return SaleSkuPo.class.getName();
    }

	@Override
	public List<SaleSkuPo> findByProdId(String prodId) {
			return findByKey("findByProdId", b().a("prodId", prodId).p());
		}

	@Override
	public List<SaleSkuPo> findByProdIdAttrIds(String prodId, String attrIds) {
		return findByKey("findByProdIdAttrIds", b().a("prodId", prodId).a("attrIds", attrIds).p());
	}
	

	@Override
	public SaleSkuPo getDefaultSkuId(String prodId) {
		// TODO Auto-generated method stub
		return getByKey("getDefaultSkuId",  b().a("prodId", prodId).p());
	}

	@Override
	public List<SaleSkuPo> findSaleSku(String userId, String productSkuId,
			Integer count) {
		// TODO Auto-generated method stub
		return findByKey("findSaleSkuRec", b().a("userId", userId).a("productSkuId", productSkuId).a("rowsCount", count).p());
	}

	@Override
	public SaleSkuPo getSkuIdByProdId(String prodId) {
		return getByKey("getSkuIdByProdId", b().a("prodId", prodId).p());
	}

	@Override
	public Integer checkSameProd(String skuId1, String skuId2) {
		
		return countByKey("checkSameProd", b().a("skuId1", skuId1).a("skuId2", skuId2).p());
	}

	@Override
	public List<SaleSkuPo> findByGroupKey(String group,Page page) {
		return findByKey("findByGroupKey", b().a("group", group).p(), page);
//		return findByKey("findByGroupKey", b().a("group", group).p());
	}

	@Override
	public Integer getCountbyGroupKey(String group) {
		return countByKey("countForGroup", b().a("group", group).p());
	}
	@Override
	public SaleSkuPo getBySkuCode(String skuCode){
		return getByKey("getBySkuCode",  b().a("skuCode", skuCode).p());
	}

	/**
	 * 查找sku 通过id
	 */
	@Override
	public List<SaleSkuPo> findSkuByIds(List<String> groupIds) {
		Map<String, Object> params = b().a("groupIds", groupIds).p();
		return findByKey("findSkuByIds", params);
	}
	
	@Override
	public List<SaleSkuPo> findAll2(String prodId, String attrIds){
		return findByKey("findAll2",  b().a("prodId", prodId).a("attrIds", attrIds).p());
	}

	@Override
	public List<SaleSkuPo> findByProdId2(Map<String, Object> params) {
		return findByKey("findByProdId2", params);	
	}
	
	@Override
	public List<SaleSkuPo> find2(Map<String, Object> params,Page page) {
		MyBatisPage defaultPage = (MyBatisPage)page;
		return findByKey("find2", params,page);	
	}

	@Override
	public Integer find2Count(Map<String, Object> params) {
		return countByKey("find2Count",params);
	}

	@Override
	public List<SaleSkuPo> findBuyAttrOpIds(String productId, String attrOpIds) {
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("prodId", productId);
		params.put("attrOpIds", attrOpIds);
		return findByKey("findBuyAttrOpIds", params);
	}	
}
